package admincow.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Collection;

import admincow.util.ConexionBD;
import admincow.vo.InseminacionVO;
import admincow.vo.PartoVO;

public class PartoDAO {
	
	public PartoVO codigo(String auto) {
		PartoVO vi = new PartoVO();
		try {
			Connection con = ConexionBD.obtenerConexion();
			Statement stmt = con.createStatement();
			ResultSet rs = stmt
					.executeQuery("select max(idparto)+1 as nro from parto");
		
			if (rs.next()) {
				vi.setIdparto(rs.getInt("nro"));
			}
			    System.out.println("El error esta ahi si no pasa esto");
				rs.close();
				stmt.close();
				con.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return vi;
	}
	
	public PartoVO obtenerPorIdparto(int idParto) {
		PartoVO vo = new PartoVO();
		try {
			Connection con = ConexionBD.obtenerConexion();
			Statement stmt = con.createStatement();
			System.out.println("ingresando al select");
			System.out.println(idParto);
			ResultSet rs = stmt
					.executeQuery("select idparto, RPvaca, fec_parto, descripcion from parto where idparto='"
							+ idParto + "'");
			if (rs.next()) {
				vo.setIdparto(rs.getInt("idparto"));
				vo.setRPvaca(rs.getString("RPvaca"));
				vo.setFec_parto(rs.getString("fec_parto"));
				vo.setDescripcion(rs.getString("descripcion"));
			}
			rs.close();
			stmt.close();
			con.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return vo;
	}

	public Collection<PartoVO> buscarPorRPvaca(String rpvaca) {
		System.out.println("Ingresando al insetar usuario");
		String query = "select idparto, RPvaca, fec_parto, descripcion from parto where RPvaca like '%"
				+ rpvaca + "%'";
		Collection<PartoVO> c = new ArrayList<PartoVO>();

		try {
			Connection con = ConexionBD.obtenerConexion();
			Statement stmt = con.createStatement();
			ResultSet rs = stmt.executeQuery(query);
			while (rs.next()) {
				PartoVO vo = new PartoVO();
				vo.setIdparto(rs.getInt("idparto"));
				vo.setRPvaca(rs.getString("RPvaca"));
				vo.setFec_parto(rs.getString("fec_parto"));
				vo.setDescripcion(rs.getString("descripcion"));
				c.add(vo);
			}
			rs.close();
			stmt.close();
			con.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return c;
	}

	public PartoVO insertar(PartoVO vo) {
		System.out.println("Ingresando al insetar usuario");
		String query = "insert into parto(idparto,RPvaca,fec_parto,descripcion)values(?,?,?,?)";
		System.out.println(query);
		try {
			Connection con = ConexionBD.obtenerConexion();
			PreparedStatement stmt = con.prepareStatement(query);
			
			stmt.setInt(1, vo.getIdparto());
			stmt.setString(2, vo.getRPvaca());
			stmt.setString(3, vo.getFec_parto());
			stmt.setString(4, vo.getDescripcion());
			
			
			int i = stmt.executeUpdate();
			if (i != 1) {
				throw new SQLException("No se pudo insertar");
			}

			stmt.close();
			con.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return vo;
	}

	public PartoVO  actualizar(PartoVO  vo) {
		System.out.println("Ingresando al actualizar usuario");
		String query = "update parto set RPvaca=?,fec_parto=?,descripcion=? where idparto=?";
		try {
			Connection con = ConexionBD.obtenerConexion();
			PreparedStatement stmt = con.prepareStatement(query);
			stmt.setString(1, vo.getRPvaca());
			stmt.setString(2, vo.getFec_parto());
			stmt.setString(3, vo.getDescripcion());
			stmt.setInt(4, vo.getIdparto());
			
			int i = stmt.executeUpdate();
			if (i != 1) {
				throw new SQLException("No se pudo actualizar");
			}

			stmt.close();
			con.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return vo;
	}

	public void eliminar(int idParto){
		System.out.println("Ingresamdo a eliminar");
		String query="DELETE FROM parto WHERE idparto=?";
		try {
			Connection con= ConexionBD.obtenerConexion();
			PreparedStatement pstmt=con.prepareStatement(query);
			pstmt.setInt(1, idParto);
			int i= pstmt.executeUpdate();
			if(i!=1){
				throw new SQLException("No se pudo eliminar");
			}
			pstmt.close();
			con.close();
		} catch (SQLException e) {
			// TODO: handle exception
			e.printStackTrace();
		}
	}
	
}
